package com.example.ymm.modules1.service.sys.iot;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.example.ymm.base.BaseService;
import com.example.ymm.model.TableList;
import com.example.ymm.model.YmPageDto;
import com.example.ymm.modules1.entity.my.sys.iot.IotTag;
import com.example.ymm.modules1.entity.my.sys.iot.ViewIotTag;
import com.example.ymm.modules1.query.sys.iot.IotTagQueryCriteria;
import com.example.ymm.modules1.query.sys.iot.ViewStorePositionQueryCriteria;
import com.example.ymm.modules1.service.dto.heng.iot.ViewStorePositionDto;

import java.util.List;

public interface IotTagService extends BaseService<IotTag> {


    List<IotTag> queryAll(IotTagQueryCriteria criteria);


    IotTag getMac(String mac);

    /**
     * 设置标签数据
     * @param iotTag
     */
    void setTagLocation(IotTag iotTag);


    List<String> bgTagImport(List<ViewIotTag> list);


    /**
     * 查询 ms 库位信息
     * @param criteria
     * @return
     */
    List<ViewStorePositionDto> getStorePosition(ViewStorePositionQueryCriteria criteria);


    /**
     * 根据标签灯查巷道灯
     * @param tagMacIn
     * @return
     */
    List<IotTag> findXiandaoDengByTagMacIn(List<String> tagMacIn);


    /**
     * 库位视图
     */
    TableList<ViewIotTag> tableList(IotTagQueryCriteria criteria, YmPageDto ymPageDto);


    List<ViewIotTag>  tableList(IotTagQueryCriteria criteria);

    ViewIotTag getDetail(String tagMac);


    /**
     * 查询这个标签对应架子 底下 所有的标签 是否都关闭了
     * @param criteria
     * @return
     */
    List<IotTag> shelfTags(IotTagQueryCriteria criteria);

    /**
     * 亮灯
     * @param tagMac
     */
    void openTag(String tagMac);


    /**
     * 关闭一个
     * @param iotTag
     * @return
     */
    JSONObject closeTagOne(ViewIotTag iotTag);


    /**
     * 关闭多个
     * @param tagMacs
     * @param gatewayMac
     * @return
     */
    JSONObject closeTagBatch(List<String> tagMacs,String gatewayMac);

    /**
     * 熄灯  支持多个，多个逗号隔开
     * @param tagMacs
     */
    JSONObject closeTag(String tagMacs,String gatewayMac);



    /**
     * 一键灭灯
     */

    void allCloseTag();


    /**
     * 批量修改状态
     * @param criteria
     */
    void batchUpStatus(IotTagQueryCriteria criteria);

}
